package br.ucb.cesbdao.janelas;

/**
 * Síntese
 *    Atributos: 
 *         modeloTabelaGrupo
 *         btn_cancelarBuscaGrupo,
 *         btn_pesquisarBuscaGrupo,
 *         btn_selecionarBuscaGrupo,
 *         jScrollPane1,
 *         painelBuscaGrupo,
 *         painelFiltroBuscaGrupo,
 *         painelResultadosBuscaGrupo,
 *         tabelaBuscaGrupo e
 *         txt_campoBuscaGrupo.
 *    Métodos:
 *         JanelaBuscaGrupo(ArrayList<Grupo> grupos),
 *         initComponents(),
 *         btn_selecionarBuscaGrupoActionPerformed(java.awt.event.ActionEvent evt) e 
 *         btn_cancelarBuscaGrupoActionPerformed(java.awt.event.ActionEvent evt).
 * 
 */

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.SQLException;
import java.util.regex.PatternSyntaxException;

import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.table.TableRowSorter;

import org.apache.log4j.Logger;

import br.ucb.cesbdao.enuns.EnumLabelAndBotao;
import br.ucb.cesbdao.enuns.EnumMensagens;
import br.ucb.cesbdao.enuns.EnumResources;
import br.ucb.cesbdao.enuns.EnumTitulo;
import br.ucb.cesbdao.model.GrupoModel;
import br.ucb.cesbdao.model.impl.GrupoModelImpl;
import br.ucb.cesbdao.modeloTabelas.ModeloTabelaGrupo;
import br.ucb.cesbdao.servicos.Servicos;
import br.ucb.cesbdao.visao.Visao;

@SuppressWarnings("serial")
public class JanelaBuscaGrupo extends javax.swing.JFrame implements KeyListener{
	private static Integer idGrupo;
	static Logger logger = Servicos.carregaLog(JanelaBuscaGrupo.class);	
    
    private ModeloTabelaGrupo modeloTabelaGrupo = new ModeloTabelaGrupo();

    public JanelaBuscaGrupo() throws SQLException, ClassNotFoundException {
    	GrupoModel model = new GrupoModelImpl();
        initComponents();
        setResizable(false);
        modeloTabelaGrupo.setGrupos(model.consultaGrupoByStatus());
        tabelaBuscaGrupo.getTableHeader().setReorderingAllowed(false);
        tabelaBuscaGrupo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        this.setTitle(EnumTitulo.TITULO_BUSCA_GRUPO.getTitulo());
    }
    
    private void initComponents() {

        painelBuscaGrupo = new javax.swing.JPanel();
        painelFiltroBuscaGrupo = new javax.swing.JPanel();
        txt_campoBuscaGrupo = new javax.swing.JTextField();
        painelResultadosBuscaGrupo = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabelaBuscaGrupo = new javax.swing.JTable();
        btn_selecionarBuscaGrupo = new javax.swing.JButton();
        btn_cancelarBuscaGrupo = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setBounds(new java.awt.Rectangle(250, 25, 0, 0));

        painelFiltroBuscaGrupo.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.FILTRO.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); // NOI18N

        txt_campoBuscaGrupo.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.NOME_PARA_FILTRAR.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        txt_campoBuscaGrupo.addKeyListener(this);

        javax.swing.GroupLayout painelFiltroBuscaGrupoLayout = new javax.swing.GroupLayout(painelFiltroBuscaGrupo);
        painelFiltroBuscaGrupo.setLayout(painelFiltroBuscaGrupoLayout);
        painelFiltroBuscaGrupoLayout.setHorizontalGroup(
            painelFiltroBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelFiltroBuscaGrupoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(txt_campoBuscaGrupo, javax.swing.GroupLayout.PREFERRED_SIZE, 425, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
                
                .addGap(73, 73, 73))
        );
        painelFiltroBuscaGrupoLayout.setVerticalGroup(
            painelFiltroBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelFiltroBuscaGrupoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelFiltroBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(txt_campoBuscaGrupo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                   )
                .addContainerGap(27, Short.MAX_VALUE))
        );

        painelResultadosBuscaGrupo.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.RESULTADOS.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); // NOI18N

        tabelaBuscaGrupo.setModel(modeloTabelaGrupo);
        
        jScrollPane1.setViewportView(tabelaBuscaGrupo);

        btn_selecionarBuscaGrupo.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_SALVAR.getCaminho())));
        btn_selecionarBuscaGrupo.setText(EnumLabelAndBotao.SELECIONAR.getTexto());
        btn_selecionarBuscaGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_selecionarBuscaGrupoActionPerformed(evt);
            }
        });

        btn_cancelarBuscaGrupo.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_CANCELAR.getCaminho())));
        btn_cancelarBuscaGrupo.setText(EnumLabelAndBotao.CANCELAR.getTexto());
        btn_cancelarBuscaGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_cancelarBuscaGrupoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout painelResultadosBuscaGrupoLayout = new javax.swing.GroupLayout(painelResultadosBuscaGrupo);
        painelResultadosBuscaGrupo.setLayout(painelResultadosBuscaGrupoLayout);
        painelResultadosBuscaGrupoLayout.setHorizontalGroup(
            painelResultadosBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelResultadosBuscaGrupoLayout.createSequentialGroup()
                .addGroup(painelResultadosBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(painelResultadosBuscaGrupoLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 631, Short.MAX_VALUE))
                    .addGroup(painelResultadosBuscaGrupoLayout.createSequentialGroup()
                        .addGap(195, 195, 195)
                        .addComponent(btn_selecionarBuscaGrupo)
                        .addGap(27, 27, 27)
                        .addComponent(btn_cancelarBuscaGrupo)))
                .addContainerGap())
        );
        painelResultadosBuscaGrupoLayout.setVerticalGroup(
            painelResultadosBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelResultadosBuscaGrupoLayout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(painelResultadosBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btn_selecionarBuscaGrupo)
                    .addComponent(btn_cancelarBuscaGrupo))
                .addContainerGap())
        );

        javax.swing.GroupLayout painelBuscaGrupoLayout = new javax.swing.GroupLayout(painelBuscaGrupo);
        painelBuscaGrupo.setLayout(painelBuscaGrupoLayout);
        painelBuscaGrupoLayout.setHorizontalGroup(
            painelBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelBuscaGrupoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(painelResultadosBuscaGrupo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(painelFiltroBuscaGrupo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        painelBuscaGrupoLayout.setVerticalGroup(
            painelBuscaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelBuscaGrupoLayout.createSequentialGroup()
                .addComponent(painelFiltroBuscaGrupo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(painelResultadosBuscaGrupo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(painelBuscaGrupo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(painelBuscaGrupo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }
    
    private void btn_selecionarBuscaGrupoActionPerformed(java.awt.event.ActionEvent evt) {
        if(tabelaBuscaGrupo.getSelectedRow() == -1){
            Visao.showMessageWarning(EnumMensagens.MSG_ALERTA_GRUPO_N_SELECIONADO.getMensagem(), "Aviso do sistema");
            return;
        }
        setIdGrupo(modeloTabelaGrupo.getGrupoAt(tabelaBuscaGrupo.getSelectedRow()).getIdGrupo());
        
        if(Janela.getPainelVincularTrabalhadorGrupo().isShowing())
        	Janela.setTxt_idGrupoVinculaGrupo(modeloTabelaGrupo.getGrupoAt(tabelaBuscaGrupo.getSelectedRow()).getNome() 
        			+"-"+
        			modeloTabelaGrupo.getGrupoAt(tabelaBuscaGrupo.getSelectedRow()).getNumeroGrupo());
        
        if(JanelaListaAtendenteByGrupo.isBuscando()){
     
        	Janela.setIdGrupoVinculaGrupo(modeloTabelaGrupo.getGrupoAt(tabelaBuscaGrupo.getSelectedRow()).getIdGrupo());
        	JanelaListaAtendenteByGrupo.setTxt_busca(modeloTabelaGrupo.getGrupoAt(tabelaBuscaGrupo.getSelectedRow()).getNumeroGrupo().toString());
        }
        this.setVisible(false);
    }

    private void btn_cancelarBuscaGrupoActionPerformed(java.awt.event.ActionEvent evt) {
        setVisible(false);
    }

    private void pesquisarBuscaGrupoActionPerformed() {
          final TableRowSorter<ModeloTabelaGrupo> sorter = new TableRowSorter<ModeloTabelaGrupo>(modeloTabelaGrupo);
          String busca = txt_campoBuscaGrupo.getText();
          tabelaBuscaGrupo.setRowSorter(sorter);
          if (busca.length() == 0)
                sorter.setRowFilter(null);
          else{
              try{
                 sorter.setRowFilter(RowFilter.regexFilter("(?i)"+busca, 1, 2));
              }catch (PatternSyntaxException ex) {
            	  logger.error(ex.getMessage());
                 Visao.showMessageWarning(EnumMensagens.MSG_ALERTA_FILTRAR.getMensagem(),"Aviso do Sistema");
              }
          }
    }
    
    
    public static Integer getIdGrupo() {
		return idGrupo;
	}

	public static void setIdGrupo(Integer idGrupo) {
		JanelaBuscaGrupo.idGrupo = idGrupo;
	}

	private javax.swing.JButton btn_cancelarBuscaGrupo;
    private javax.swing.JButton btn_selecionarBuscaGrupo;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel painelBuscaGrupo;
    private javax.swing.JPanel painelFiltroBuscaGrupo;
    private javax.swing.JPanel painelResultadosBuscaGrupo;
    private javax.swing.JTable tabelaBuscaGrupo;
    private javax.swing.JTextField txt_campoBuscaGrupo;

	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		pesquisarBuscaGrupoActionPerformed();
		
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}
